package com.ffcs.crmd.tsp.api.netty;

import io.netty.channel.Channel;

/**
 * 
 * 功能说明:通道事件监听接口
 *
 * @author ZHONGFUHUA
 * 
 * @since 1.0.0-SNAPSHOT
 *
 */
public interface INettyChannelEventListener {
    
    /**
     * 
     * 功能说明:启动监听
     *
     */
    public void start();
    
    /**
     * 
     * 功能说明:关闭监听
     *
     */
    public void shutdown();
    
    /**
     * 
     * 功能说明: 通道连接事件
     * 
     * @param remoteAddr 远程通信地址
     * @param channel 通道
     */
    public void onChannelConnect(final String remoteAddr, final Channel channel);

    /**
     * 
     * 功能说明:通道关闭
     * 
     * @param remoteAddr 远程通信地址
     * @param channel 通道
     */
    public void onChannelClose(final String remoteAddr, final Channel channel);

    /**
     * 
     * 功能说明:通道异常
     * 
     * @param remoteAddr 远程通信地址
     * @param channel 通道
     */
    public void onChannelException(final String remoteAddr, final Channel channel);

    /**
     * 
     * 功能说明:通道出现Idle情况(长时间的读和发送没有交互)
     * 
     * @param remoteAddr 远程通信地址
     * @param channel 通道
     */
    public void onChannelIdle(final String remoteAddr, final Channel channel);
}